#ifndef CLASSIDS_H_
#define CLASSIDS_H_

#define ClassID(x)                CLASS_##x
#define	DefineClassID(x,classID)  ClassID(x) = classID,

// Runtime classIDs are kept intentionally small.
enum ClassIDType
{
DefineClassID (Undefined, -1)	
DefineClassID (Object, 0)
DefineClassID (GameObject, 1)
DefineClassID (Component, 2)
DefineClassID (LevelGameManager, 3)
DefineClassID (Transform, 4)
DefineClassID (TimeManager, 5)
DefineClassID (GlobalGameManager, 6)
DefineClassID (Behaviour, 8)
DefineClassID (GameManager, 9)
DefineClassID (AudioManager, 11)
DefineClassID (ParticleAnimator, 12)
DefineClassID (InputManager, 13)
DefineClassID (EllipsoidParticleEmitter, 15)
DefineClassID (Pipeline, 17)
DefineClassID (EditorExtension, 18)
DefineClassID (Physics2DSettings, 19)
DefineClassID (Camera, 20)
DefineClassID (Material, 21)
DefineClassID (MeshRenderer, 23)
DefineClassID (Renderer, 25)
DefineClassID (ParticleRenderer, 26)
DefineClassID (Texture, 27)
DefineClassID (Texture2D, 28)
DefineClassID (SceneSettings, 29)
DefineClassID (GraphicsSettings, 30)
DefineClassID (MeshFilter, 33)
DefineClassID (OcclusionPortal, 41)
DefineClassID (Mesh, 43)
DefineClassID (Skybox, 45)
DefineClassID (QualitySettings, 47)
DefineClassID (Shader, 48)
DefineClassID (TextAsset, 49)
DefineClassID (Rigidbody2D, 50)
DefineClassID (Physics2DManager, 51)
DefineClassID (Collider2D, 53)
DefineClassID (Rigidbody, 54)
DefineClassID (PhysicsManager, 55)
DefineClassID (Collider, 56)
DefineClassID (Joint, 57)
DefineClassID (CircleCollider2D, 58)
DefineClassID (HingeJoint, 59)
DefineClassID (PolygonCollider2D, 60)
DefineClassID (BoxCollider2D, 61)
DefineClassID (PhysicsMaterial2D, 62)
DefineClassID (MeshCollider, 64)
DefineClassID (BoxCollider, 65)
DefineClassID (SpriteCollider2D, 66)
DefineClassID (EdgeCollider2D, 68)
DefineClassID (PolygonColliderBase2D, 69)
DefineClassID (ComputeShader, 72)
DefineClassID (AnimationClip, 74)
DefineClassID (ConstantForce, 75)
DefineClassID (WorldParticleCollider, 76)
DefineClassID (TagManager, 78)
DefineClassID (AudioListener, 81)
DefineClassID (AudioSource, 82)
DefineClassID (AudioClip, 83)
DefineClassID (RenderTexture, 84)
DefineClassID (MeshParticleEmitter, 87)
DefineClassID (ParticleEmitter, 88)
DefineClassID (Cubemap, 89)
DefineClassID (Avatar, 90)
DefineClassID (AnimatorController, 91)
DefineClassID (GUILayer, 92)
DefineClassID (RuntimeAnimatorController, 93)
DefineClassID (ScriptMapper, 94)
DefineClassID (Animator, 95)
DefineClassID (TrailRenderer, 96)
DefineClassID (DelayedCallManager, 98)
DefineClassID (TextMesh, 102)
DefineClassID (RenderSettings, 104)
DefineClassID (Light, 108)
DefineClassID (CGProgram, 109)
DefineClassID (BaseAnimationTrack, 110)
DefineClassID (Animation, 111)
DefineClassID (MonoBehaviour, 114)
DefineClassID (MonoScript, 115)
DefineClassID (MonoManager, 116)
DefineClassID (Texture3D, 117)
DefineClassID (NewAnimationTrack, 118)
DefineClassID (Projector, 119)
DefineClassID (LineRenderer, 120)
DefineClassID (Flare, 121)
DefineClassID (Halo, 122)
DefineClassID (LensFlare, 123)
DefineClassID (FlareLayer, 124)
DefineClassID (HaloLayer, 125)
DefineClassID (NavMeshLayers, 126)
DefineClassID (HaloManager, 127)
DefineClassID (Font, 128)
DefineClassID (PlayerSettings, 129)
DefineClassID (NamedObject, 130)
DefineClassID (GUITexture, 131)
DefineClassID (GUIText, 132)
DefineClassID (GUIElement, 133)
DefineClassID (PhysicMaterial, 134)
DefineClassID (SphereCollider, 135)
DefineClassID (CapsuleCollider, 136)
DefineClassID (SkinnedMeshRenderer, 137)
DefineClassID (FixedJoint, 138)
DefineClassID (RaycastCollider, 140)
DefineClassID (BuildSettings, 141)
DefineClassID (AssetBundle, 142)
DefineClassID (CharacterController, 143)
DefineClassID (CharacterJoint, 144)
DefineClassID (SpringJoint, 145)
DefineClassID (WheelCollider, 146)
DefineClassID (ResourceManager, 147)
DefineClassID (NetworkView, 148)
DefineClassID (NetworkManager, 149)
DefineClassID (PreloadData, 150)
DefineClassID (MovieTexture, 152)
DefineClassID (ConfigurableJoint, 153)
DefineClassID (TerrainCollider, 154)
DefineClassID (MasterServerInterface, 155)
DefineClassID (TerrainData, 156)
DefineClassID (LightmapSettings, 157)
DefineClassID (WebCamTexture, 158)
DefineClassID (EditorSettings, 159)
DefineClassID (InteractiveCloth, 160)
DefineClassID (ClothRenderer, 161)
DefineClassID (EditorUserSettings, 162)
DefineClassID (SkinnedCloth, 163)
DefineClassID (AudioReverbFilter, 164)
DefineClassID (AudioHighPassFilter, 165)
DefineClassID (AudioChorusFilter, 166)
DefineClassID (AudioReverbZone, 167)
DefineClassID (AudioEchoFilter, 168)
DefineClassID (AudioLowPassFilter, 169)
DefineClassID (AudioDistortionFilter, 170)
DefineClassID (AudioBehaviour, 180)
DefineClassID (AudioFilter, 181)
DefineClassID (WindZone, 182)
DefineClassID (Cloth, 183)
DefineClassID (SubstanceArchive, 184)
DefineClassID (ProceduralMaterial, 185)
DefineClassID (ProceduralTexture, 186)
DefineClassID (OffMeshLink, 191)
DefineClassID (OcclusionArea, 192)
DefineClassID (Tree, 193)
DefineClassID (NavMesh, 194)
DefineClassID (NavMeshAgent, 195)
DefineClassID (NavMeshSettings, 196)
DefineClassID (LightProbes, 197)
DefineClassID (ParticleSystem, 198)
DefineClassID (ParticleSystemRenderer, 199)
DefineClassID (LODGroup, 205)
DefineClassID (BlendTree, 206)
DefineClassID (Motion, 207)
DefineClassID (NavMeshObstacle, 208)
DefineClassID (TerrainInstance, 210)

DefineClassID (SpriteRenderer, 212)
DefineClassID (Sprite, 213)
DefineClassID (CachedSpriteAtlas, 214)

DefineClassID (LightProbeGroup, 220)
DefineClassID (AnimatorOverrideController, 221)

DefineClassID (Joint2D, 230)
DefineClassID (SpringJoint2D, 231)
DefineClassID (DistanceJoint2D, 232)
DefineClassID (HingeJoint2D, 233)
DefineClassID (SliderJoint2D, 234)
// Reserved 235-238 for new joints.
//DefineClassID (WheelJoint2D, 235)
//DefineClassID (FrictionJoint2D, 236)
//DefineClassID (PulleyJoint2D, 237)
//DefineClassID (GearJoint2D, 238)

kLargestRuntimeClassID,

DefineClassID (SmallestEditorClassID, 1000)
DefineClassID (Prefab, 1001)
DefineClassID (EditorExtensionImpl, 1002)
DefineClassID (AssetImporter, 1003)
DefineClassID (AssetDatabase, 1004)
DefineClassID (Mesh3DSImporter, 1005)
DefineClassID (TextureImporter, 1006)
DefineClassID (ShaderImporter, 1007)
DefineClassID (ComputeShaderImporter, 1008)
DefineClassID (AvatarMask, 1011)
DefineClassID (AudioImporter, 1020)
DefineClassID (HierarchyState, 1026)
DefineClassID (GUIDSerializer, 1027)
DefineClassID (AssetMetaData, 1028)
DefineClassID (DefaultAsset, 1029)
DefineClassID (DefaultImporter, 1030)
DefineClassID (TextScriptImporter, 1031)
DefineClassID (SceneAsset, 1032)
DefineClassID (NativeFormatImporter, 1034)
DefineClassID (MonoImporter, 1035)
DefineClassID (AssetServerCache, 1037)
DefineClassID (LibraryAssetImporter, 1038)
DefineClassID (ModelImporter, 1040)
DefineClassID (FBXImporter, 1041)
DefineClassID (TrueTypeFontImporter, 1042)
DefineClassID (MovieImporter, 1044)
DefineClassID (EditorBuildSettings, 1045)
DefineClassID (DDSImporter, 1046)
DefineClassID (InspectorExpandedState, 1048)
DefineClassID (AnnotationManager, 1049)
DefineClassID (MonoAssemblyImporter, 1050)
DefineClassID (EditorUserBuildSettings, 1051)
DefineClassID (PVRImporter, 1052)
DefineClassID (Transition, 1101)
DefineClassID (State, 1102)
DefineClassID (HumanTemplate, 1105)
DefineClassID (StateMachine, 1107)
DefineClassID (PreviewAssetType, 1108)
DefineClassID (SubstanceImporter, 1112)

kLargestEditorClassID,

kClassIdOutOfHierarchy = 100000,

DefineClassID (int, kClassIdOutOfHierarchy)
DefineClassID (bool, kClassIdOutOfHierarchy + 1)
DefineClassID (float, kClassIdOutOfHierarchy + 2)
DefineClassID (MonoObject, kClassIdOutOfHierarchy + 3)
DefineClassID (Collision, kClassIdOutOfHierarchy + 4)
DefineClassID (Vector3f, kClassIdOutOfHierarchy + 5)
DefineClassID (RootMotionData, kClassIdOutOfHierarchy + 6)
DefineClassID (Collision2D, kClassIdOutOfHierarchy + 7)
};

//make sure people dont accidentally define classids in other files:
#undef DefineClassID

#endif
